import { convertToOptions, isAdd, modalProps } from '@/services/aifarm/Common';
import { ModalForm } from '@ant-design/pro-form';
import { history, useModel } from '@umijs/max';
import { Form, Spin } from 'antd';
import React from 'react';

// 第一步：引入查询对象与添加或更新对象的函数

import { message } from '@/shared/EscapeAntd';
import { ProFormRadio, ProFormText } from '@ant-design/pro-components';
import { insertOrUpdateForDept, selectByIdForDept, } from './dept-service';

type editProps = Farm.EditPageProps;

const DeptEdit: React.FC<editProps> = (props: editProps) => {
  //获得当前的农场id，除了Farm表，几乎所有的一级表，都要添加这个字段
  const { initialState } = useModel('@@initialState');
  const farmId = initialState?.currentFarmId;
  if (farmId === undefined) {
    //message.error('请先选择农场');
    console.log('请先选择农场');
    history.push('/user/login');
  }
  // 第二步：获取从父窗口传入的id、刷新列表方法
  const { visible, id, setVisible, listReload } = props;
  const deptId = id as number;
  const [form] = Form.useForm();

  //是否加载完成
  const [loaded, setLoaded] = React.useState<boolean>(false);

  // 第三步：读取取数据库中的数据，主要是为了设置默认值
  React.useEffect(() => {
    const initFun = async () => {
      // 检索出数据
      if (!isAdd(id)) {
        const result = await selectByIdForDept(deptId);
        if (result.success) {
          form.setFieldsValue(result.data);
        }
      } else {
        // 设置一个初始化的数据
        const tempRecord = { farmId };
        form.setFieldsValue(tempRecord);
      }
      setLoaded(true);
    };
    initFun();
  }, [deptId]);

  // 第四步：调用添加或更新的方法，保存到数据库中。并刷新父窗口页面。
  const onFinishHandle = async (values: Record<string, any>) => {
    const data: any = { ...values, deptId, farmId };
    const ren: Farm.ResponseInfo<number> = await insertOrUpdateForDept(data);
    if (ren.success) {
      // List要刷新
      listReload();
      message.success('提交成功');
      // 不返回不会关闭弹框
      return true;
    }
    message.success('保存失败');
    return false;
  };

  if (!loaded) {
    return <Spin fullscreen />;
  }

  // 第五步：配置表单中要显示的内容
  return (
    <ModalForm
      form={form}
      title={deptId > 0 ? '编辑' : '新增'}
      open={visible&& loaded}
      modalProps={modalProps}
      onOpenChange={setVisible}
      onFinish={onFinishHandle}
      width={600}
      //loading={提交服务器的状态}
      grid={true}
    >
      <ProFormText
        name='farmId'
        label='农场ID'
        width='md'
      />
      <ProFormText
        name='deptName'
        label='部门名称'
        rules={[
          {
            required: true,
          },
        ]}
        width='md'
      />
      <ProFormText
        name='orderNo'
        label='顺序号码'
        rules={[
          {
            required: true,
          },
        ]}
        width='md'
      />
      <ProFormText
        name='remarks'
        label='备注'
        width='md'
      />

    </ModalForm>
  );
};

export default DeptEdit;
